package com.tony.juc;

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

/**
 * Created with IntelliJ IDEA.
 *
 * @Title: SemaphoreDemo001
 * @Auther: 皮蛋布丁
 * @Date: 2022/04/12/21:27
 * @Description: 有限资源的保护问题，即限制最大支持量
 */
public class SemaphoreDemo001 {

    public static void main(String[] args) {
        Semaphore semaphore = new Semaphore(2); //此时只有两个资源
        for (int i = 0; i < 5; i++) { //给出5个线程资源
            new Thread(()->{ //此时5个用户需要抢占2个资源
                try {
                    semaphore.acquire(); //尝试获取到一个资源
                    if (semaphore.availablePermits() >= 0) { //当前有了空余资源
                        System.err.printf("【业务办理-开始】当前比哪里业务人员的信息为：%s%n",Thread.currentThread().getName());
                        TimeUnit.SECONDS.sleep(2); //模拟业务办理的时间
                        System.out.printf("〖业务—结束〗当前办理业务人员的信息为：%s%n",Thread.currentThread().getName());
                        semaphore.release(); //释放资源
                    }
                } catch (Exception e) {}
            },"用户_" + i).start();
        }

    }

}
